package com.lzy.pattern.singleton.demo5;

/**
 * @ClassName: Singleton
 * @Description: 单例设计模式：懒汉式，静态内部类
 * @Author: LiuZy
 * @Date: 2022/4/9 20:50
 * @Version: 1.0
 */
public class Singleton {

    //1.私有化构造方法
    private Singleton(){}

    /*
    私有化静态内部类
    静态内部类单例模式中实例由内部类创建，由于 JVM 在加载外部类的过程中, 是不会加载静态内部类的,
    只有内部类的属性/方法被调用时才会被加载, 并初始化其静态属性。静态属性由于被static 修饰，保证只被实例化一次，并且严格保证实例化顺序。
     */
    private static class Inner{
        //创建静态成员变量对象
        private static final Singleton INSTANCE = new Singleton();
    }

    //对外提供静态公共方法获取类对象
    public static Singleton getInstance(){
        return Inner.INSTANCE;
    }
}